10DIMa(4,4),b(4,4)
11i=RND(-TIME)
12c=0
13FORm=1TO10
14REPEAT
15x=RND(5)-1
16y=RND(5)-1
20UNTILb(y,x)=0
21b(y,x)=1
22GOSUB90
23NEXT
24MODE4
25VDU23,1,0;0;0;0;
26m=0
27x=0
28y=0
29*FX4,1
30GOSUB60
31GCOL0,1
32GOSUB80
33REPEAT
34g=GET-136
35GCOL0,0
36GOSUB80
40x=(x-(g=0)*4-(g=1))MOD5
41y=(y-(g=3)*4-(g=2))MOD5
42IFg=-104THENm=m+1:GOSUB90
50GOSUB60
51GCOL0,1+(c=0)
52GOSUB80
53UNTILc=0
54VDU23,1,1;0;0;0;
55OSCLI"FX4,0"
56END
60FORj=0TO4
61FORi=0TO4
62GCOL0,a(j,i)
63MOVEi*128+4,1020-j*128-4
64PLOT0,120,0
70PLOT81,-120,-120
71PLOT81,120,0
72NEXT,
73PRINTTAB(0,21);"moves=";m
74RETURN
80MOVEx*128,1020-y*128
81PLOT1,128,0
82PLOT1,0,-128
83PLOT1,-128,0
84PLOT1,0,128
85RETURN
90FORj=-1TO1
91FORi=-1TO1
92IFi*j<>0ORy+j<0ORy+j>4ORx+i<0ORx+i>4THENGOTO102
100a(y+j,x+i)=a(y+j,x+i)EOR1
101c=c+(a(y+j,x+i)=0)*2+1
102NEXT,
103RETURN
